var express = require('express');
var router = express.Router();

// 引入 db 文件
const AccountModel = require('../../models/AccountModel')
// 导入 moment
const moment = require('moment')

// 导入中间件
let checkTokenMiddleware = require('../../middlewares/checkTokenMiddleware')


// 获取所有账单
router.get('/account', checkTokenMiddleware, function (req, res, next) {

  // 数据库查找
  AccountModel.find().sort({ time: -1 }).exec((err, data) => {
    // 响应失败的提示
    if (err) {
      res.json({
        code: '1001',
        msg: '读取失败',
        data: null
      })
      return
    }
    // 响应成功的提示
    res.json({
      // 响应成功的请求
      code: '0000',
      // 响应的信息
      msg: '读取成功',
      data: data
    })
  })

});


// 获取一条账单
router.get('/account/:id', checkTokenMiddleware, function (req, res, next) {
  let { id } = req.params
  AccountModel.findById(id, (err, data) => {
    // 响应失败的提示
    if (err) {
      res.json({
        code: '1001',
        msg: '读取失败',
        data: null
      })
      return
    }
    // 响应成功的提示
    res.json({
      // 响应成功的请求
      code: '0000',
      // 响应的信息
      msg: '读取成功',
      data: data
    })
  })
});

// 添加记录
router.get('/account/create', checkTokenMiddleware, function (req, res, next) {
  res.render('create');
});

// 新增记录
router.post('/account', checkTokenMiddleware, function (req, res, next) {
  AccountModel.create({
    ...req.body,
    time: moment(req.body.time).toDate()
  }, (err, data) => {
    // 响应失败的提示
    if (err) {
      res.json({
        code: '1002',
        msg: '新增失败',
        data: null
      })
    }
    // 响应成功的提示
    res.json({
      // 响应成功的请求
      code: '0000',
      // 响应的信息
      msg: '新增成功',
      data: data
    })
  })

});

// 删除记录
router.delete('/account/:id', checkTokenMiddleware, function (req, res, next) {
  // 获取记录 id
  let id = req.params.id
  // console.log(id);
  // db.get('accounts').remove({ id }).write()
  AccountModel.deleteOne({ _id: id }, (err, data) => {
    // 响应失败的提示
    if (err) {
      res.json({
        code: '1003',
        msg: '删除失败',
        data: null
      })
    }
    // 响应成功的提示
    res.json({
      // 响应成功的请求
      code: '0000',
      // 响应的信息
      msg: '删除成功',
      data: data
    })
  })
});

// 更新单个账单记录
router.patch('/account/:id', checkTokenMiddleware, (req, res) => {
  // 获取记录 id
  let { id } = req.params
  AccountModel.updateOne({ _id: id }, req.body, (err, data) => {
    // 响应失败的提示
    if (err) {
      res.json({
        code: '1005',
        msg: '更新单个账单失败',
        data: null
      })
    }
    // 再次查询数据库 获取单条数据
    AccountModel.findById(id, (err, data) => {
      // 响应失败的提示
      if (err) {
        res.json({
          code: '1004',
          msg: '读取失败',
          data: null
        })
        return
      }
      // 响应成功的提示
      res.json({
        // 响应成功的请求
        code: '0000',
        // 响应的信息
        msg: '更新成功',
        data: data
      })
    })
  })
});


module.exports = router;
